Attaque de XZ Utils par porte dérobée

Un article de Wikipédia, l'encyclopédie libre.

Une grave attaque de XZ Utils par porte dérobée, visant par rebond le serveur OpenSSH a été détectée fin mars 2024 par le développeur allemand Andres Freund. Selon de nombreux analystes de sécurité, elle constitue une attaque de la chaîne logistique (en) de Linux d'une envergure encore inégalée.

Détection[modifier | modifier le code]

Le 29 mars 2024, un message a été envoyé sur la liste de diffusion oss-security d'Openwall (en) montrant que le code de liblzma, une composante de l'outil de compression XZ Utils, était probablement compromis[1]. L'auteur du fil de discussion, Andres Freund, employé de Microsoft, a identifié des fichiers de test compressés qui ont été ajoutés au code pour implanter une porte dérobée via des ajouts au script Configure dans les archives tar. Il a commencé son enquête parce que ses tests de performance sur PostgreSQL ont décelé une étrange régression de performances :sshd montrait une charge CPU anormale, des temps d'exécution plus élevés et des erreurs Valgrind inexplicables[2]. Signalé par Red Hat, le problème a reçu le score de gravité maximale (10) sur le référentiel CVE[3],[4].

Description[modifier | modifier le code]

Le code malveillant est connu pour affecter les versions 5.6.0 et 5.6.1 de XZ Utils. Bien que l'exploit reste inactif sans qu'un patch spécifique au serveur SSH ne soit utilisé, cette faille pourrait permettre à un acteur malveillant de contourner l'authentification sshd et d'obtenir un accès distant non autorisé à l'ensemble du système[5]. Le mécanisme malveillant consiste en deux fichiers de test compressés contenant le code binaire malveillant. Ces fichiers sont disponibles dans le référentiel git, mais restent dormants à moins d'être extraits et injectés dans le programme[6].

Le code utilise le mécanisme glibc IFUNC pour remplacer une fonction existante dans OpenSSH appelée RSA_public_decrypt par une version malveillante. OpenSSH ne charge normalement pas liblzma, mais un patch tiers utilisé par plusieurs distributions Linux provoque le chargement de libsystemd, qui à son tour charge liblzma[6]. Une version modifiée de build-to-host.m4 a été incluse dans le fichier tar de la version téléchargée sur GitHub, qui extrait un script qui effectue l'injection réelle dans liblzma. Ce fichier m4 modifié n'est pas présent dans le dépôt git ; il n'est disponible qu'à partir des fichiers tar publiés par le mainteneur, séparément de git[6]. Le script semble effectuer l'injection uniquement lorsque le système est compilé sur un système Linux x86-64 qui utilise glibc et GCC et est construit via dpkg ou rpm[6].

La reconnaissance de l'attaquant se base sur une clé publique au format ed448 présente dans le fichier binaire infecté[7].

Réactions[modifier | modifier le code]

Remédiation[modifier | modifier le code]

GitHub a immédiatement fermé le dépôt XZ Utils pour violation des conditions de service, à cause de l'attaque de la chaîne logistique[8], avant de le rouvrir le .

De nombreuses distributions Linux populaires sont concernées[9], dont Debian (testing et unstable)[10], Fedora Rawhide[5], Kali Linux[11], et OpenSUSE Tumbleweed[12]. La plupart des distributions Linux qui suivent un modèle de mise à jour stable ne sont pas affectées, car elles utilisent des versions plus anciennes de xz[6].

Arch Linux a publié un avis invitant les utilisateurs à mettre à jour immédiatement, bien qu'il ait également noté que le package OpenSSH d'Arch n'inclut pas le patch nécessaire à la porte dérobée[13]. FreeBSD n'est pas affecté par cette attaque, car toutes les versions de FreeBSD prises en charge incluent des versions de xz antérieures à celles concernées et l'attaque cible la glibc de Linux[14].

Identification de l'auteur[modifier | modifier le code]

La porte dérobée a été ajoutée par « JiaT75 » alias Jia Cheong Tan, l'un des deux mainteneurs officiels du projet, bien que récemment arrivé. Les analystes considèrent généralement que Jia Tan est un pseudonyme, voire un paravent pour un groupe organisé. JiaT75 a sciemment tenté de dissimuler ses traces, en mettant en cause Valgrind au nom d'un bug sans lien[15],[16], et a utilisé plusieurs faux-nez pour inciter le projet et les distributions ciblées à incorporer ses contributions[17],[18]. Il est également responsable de modifications curieuses sur d'autres projets, au moins libarchive (en).

Plusieurs experts en sécurité interrogés par le magazine américain Wired voient derrière cette attaque la main du groupe russe Cozy Bear, lié au SVR, le service de renseignement extérieur, déjà mis en cause pour une attaque de même type visant les logiciels SolarWinds en 2020. D'autres services étatiques sont évoqués : l'Iran, la Corée du Nord, Israel, mais surtout la Chine via Double Dragon (groupe de hackers) (en), un autre groupe constituant une menace persistante.

Analyses[modifier | modifier le code]

L'informaticien Alex Stamos a estimé que cette attaque « aurait pu être la porte dérobée la plus répandue et la plus efficace jamais implantée dans un logiciel », notant que si elle n'avait pas été détectée, elle aurait « donné à ses créateurs une clé maîtresse sur n'importe lequel des centaines de millions d'ordinateurs dans le monde utilisant SSH »[19].

Image externe
Le dessin 2347 Dépendance de xkcd fréquemment cité en rapport avec l'attaque de XZ Utils

En outre, l'incident a également lancé un débat sur la viabilité de faire dépendre les éléments critiques de l'infrastructure numérique de bénévoles non rémunérés[20]. De telles inquiétudes avaient déjà été formulées lors de l'attaque Log4Shell visant Log4j[21], mais aussi OpenSSL (faille Heartbleed), et des fragilités de type point de défaillance unique menaçant GPG, NTP ou encore npm. Sur les réseaux sociaux, le dessin Dépendance du comics xkcd a été largement repris pour illustrer ce problème. Il met en avant la fragilité de toute l'infrastructure numérique moderne reposant sur des briques logicielles maintenues bénévolement[22].

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]

Notes et références[modifier | modifier le code]

  1. Andres Freund, « backdoor in upstream xz/liblzma leading to ssh server compromise », oss-security mailing list,
  2. « A backdoor in xz », lwn.net (consulté le )
  3. « CVE Website », sur www.cve.org (consulté le )
  4. « NVD - CVE-2024-3094 », sur nvd.nist.gov (consulté le )
  5. a et b (en) « Urgent security alert for Fedora 41 and Rawhide users », www.redhat.com (consulté le )
  6. a b c d et e (en) James, « xz-utils backdoor situation », Gist
  7. (en-US) Andy Greenberg, « The Mystery of ‘Jia Tan,’ the XZ Backdoor Mastermind », Wired,‎ (ISSN 1059-1028, lire en ligne, consulté le )
  8. (en) Larabel, « GitHub Disables The XZ Repository Following Today's Malicious Disclosure », www.phoronix.com, (consulté le )
  9. « Des distributions Linux fragilisées par une backdoor dans l'outil XZ - Le Monde Informatique », sur LeMondeInformatique, (consulté le )
  10. « CVE-2024-3094 », security-tracker.debian.org (consulté le )
  11. (en) « All about the xz-utils backdoor | Kali Linux Blog », Kali Linux, (consulté le )
  12. (en) « openSUSE addresses supply chain attack against xz compression library », openSUSE News, (consulté le )
  13. « Arch Linux - News: The xz package has been backdoored », archlinux.org (consulté le )
  14. « Disclosed backdoor in xz releases - FreeBSD not affected » (consulté le )
  15. (en-US) Goodin, « Backdoor found in widely used Linux utility breaks encrypted SSH connections », Ars Technica, (consulté le )
  16. Korben, « Une backdoor bien critique découverte dans xz Utils / liblzma », sur Korben, (consulté le )
  17. (en) Evan Boehs, « Everything I know about the XZ backdoor », sur boehs.org (consulté le )
  18. Russ Cox, « Timeline of the xz open source attack », sur research.swtch.com (consulté le )
  19. Kevin Roose, « Did One Guy Just Stop a Huge Cyberattack? », sur New York Times
  20. (en) Amrita Khalid, « How one volunteer stopped a backdoor from exposing Linux systems worldwide », sur The Verge, (consulté le )
  21. Laurent Delattre, « Faille XZ Utils sous Linux : La sécurité de l’open source une nouvelle fois en question ? », sur IT for Business, (consulté le )
  22. « 2347: Dependency - explain xkcd », sur www.explainxkcd.com (consulté le )